% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode

% This is a simple template for a LaTeX document using the "article" class.
% See "book", "report", "letter" for other types of document.

\documentclass[11pt]{article} % use larger type; default would be 10pt

\usepackage[utf8]{inputenc} % set input encoding (not needed with XeLaTeX)

%%% Examples of Article customizations
% These packages are optional, depending whether you want the features they provide.
% See the LaTeX Companion or other references for full information.

%%% PAGE DIMENSIONS
\usepackage{geometry} % to change the page dimensions
\geometry{a4paper} 

\usepackage{graphicx} 

\usepackage{booktabs} 

\usepackage{array} 

\usepackage{paralist} 

\usepackage{verbatim} 

\usepackage{subfig}

\usepackage{fancyhdr}

\pagestyle{fancy}

\renewcommand{\headrulewidth}{0pt}

\lhead{}\chead{}\rhead{}
\lfoot{}\cfoot{\thepage}\rfoot{}

\usepackage{sectsty}
\allsectionsfont{\sffamily\mdseries\upshape}

\usepackage[nottoc,notlof,notlot]{tocbibind}

\usepackage[titles,subfigure]{tocloft} 

\renewcommand{\cftsecfont}{\rmfamily\mdseries\upshape}
\renewcommand{\cftsecpagefont}{\rmfamily\mdseries\upshape} 



\title{Uebung 2}
\author{Sebastian Geschke}

\begin{document}
\maketitle

\section*{Uebung 2-1}

Lesen Sie What Every Programmer Should Know About
Memory  und beantworten Sie die
Fragen.

\subsection*{Uebung 2-1a}

Lesen Sie Kapitel 2, 2.1, 2.2.4 und 2.2.5. Erklären sie die Abkürzungen SMP und NUMA

\begin{itemize}
	\item SMP (\textbf{symmetric multi-processing}) heißt, dass sich bei einem Multiprozessor System, mit identischen Prozessoren, die Prozessoren einen gemeinsamen Adressraum besitzen. Das bedeutet, dass jeder Prozessor mit der gleichen physikalischen Speicheraddresse die selbe Speicherzelle addressiert.
	\item NUMA (\textbf{Non-uniform memory architecture}) bedeutet,  dass jeder Prozessor einen lokalen Speicher besitzt den er direkt ansprechen kann, woraus sehr geringe Zugriffszeiten resultieren. Um den RAM, bei einem Multprozessor System, für alle CPUs offen zu legen, gibt es so genannte Interconnects die ermöglichen, dass z.B. CPU1 auf den RAM von CPU2 zugreifen kann. Die Zugriffszeit hängt also davon ab ob der CPU direkt auf den Speicher zugreifen kann oder ob er auf fremden Speicher zugreifen muss.
\end{itemize}

\subsection*{Uebung 2-1b}

Lesen Sie Kapitel 3, 3.1, 3.2. Was ist die von Neumann Architektur? Was kostet
ein Zugriff auf ein Register bzw. auf den Hauptspeicher? Was versteht man unter
\textit{eviction}?

\begin{itemize}
	\item Die Von-Neumann-Architektur (VNA) besagt, dass der Speicher eines Computers sowohl Daten, als auch Code enhalten kann. Die VNA besteht aus folgenden Komponenten.
	\begin{itemize}
		\item Rechenwerk (Arithmetic Logic Unit - ALU)
		\item Steuerwerk (Control Unit)
		\item Speicherwerk (Memory) Daten und Instruktionen sind im selben Speicher.
		\item Ein-/Ausgabewerk (I/O Unit)
	\end{itemize}
	\item Zugriff auf register benötigt 1cyle, auf L1 ~3cyles, auf L2 ~14cyles und ca. 240cyles auf den Hauptspeicher 
	\item \textit{eviction} ist der Vorgang wenn Daten in höher Levelige Caches gepushed werden (z.B. von L1 in L2). Entfernen aus dem Cache falls neue Daten geladen werden müssen.
\end{itemize}

\subsection*{Uebung 2-1c}
Lesen Sie Kapitel 4, 4.1, 4.2. Wofür braucht man virtuellen Speicher? Warum wird
mehrstufige \textit{address translation} verwendet?
\begin{itemize}
	\item \textit{Virtueller Speicher} wird genutzt dass jeder Prozess den kompletten Speicher in einem System benutzen könnte, und glaubt alleine auf dem System ausfgeführt zu werden.
	\item Mehrstufige \textit{address translation} wird benutzt um die größe der Tabellen klein zu halten, um die Tabellen von vielen Prozessen im Speicher zu haben ohne die Performance zu beeinflussen.
\end{itemize}

\subsection*{Uebung 2-1d}
Lesen Sie Kapitel 6.2, 6.2.1 (bis Seite 51) und probieren Sie den angegeben Code zur Matrix-Multiplikation aus. Messen Sie mit \textit{gettimeofday()} und vergleichen Sie das Ergebnis mit dem Artikel. Was versteht man unter \textit{locality}, Was versteht man unter \textit{alignment}?

\begin{itemize}
	\item \textif{Locality} bedeutet, dass man vorraussagen kann, dass Daten die in der nähe von Daten liegen, auf die zugegriffen wurde, in naher Zukunft auch zugegriffen wird. Dies kann man zum \textit{cachen} der Daten benutzen. 
	\item Unter \textif{alignment} versteht man, ob Daten anhand des caches allokiert wurden. Speicher beginnt beim vielfachen von entweder Cachlines oder Pages.
\end{itemize}

\end{document}
